home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_a
/
macros.lib
< prev
next >
Wrap
Text File
|
1995-04-22
|
11KB
|
902 lines
*My SYSTEXT
*Version 6
OPEN=3
GETREC=5
GETCHR=7
PUTREC=9
PUTCHR=11
CLOSE=12
STATIS=13
SPECIL=14
DRAWLN=$11
FILLIN=$12
RENAME=$20
DELETE=$21
FORMAT=$22
LOCKFL=$23
UNLOCK=$24
POINT=$25
NOTE=$26
IOCFRE=$FF
APPEND=$01
DIRECT=$02
OPNRD=$04
OPNWT=$08
OPNRW=$0C
MXDMOD=$10
INSCLR=$20
SCREDT='E'
KBD='K'
DISPLY='S'
PRINTR='P'
CASSET='C'
MODEM='M'
DISK='D'
EOL=$9B
CR=EOL
Z=$00
TRUE=$FFFF
ON=TRUE
FALSE=0
OFF=FALSE
*---------------
CASINI=$02
WARMST=$08
BOOT?=$09
DOSVEC=$0A
DOSINI=$0C
APPMHI=$0E
POKMSK=$10
BRKKEY=$11
RTCLOK=$12
SOUNDR=$41
ATRACT=$4D
DRKMSK=$4E
COLRSH=$4F
VDSLST=$200
VKEYBD=$208
VTIMR1=$210
VTIMR2=$212
VTIMR4=$214
VIMIRQ=$216
CDTMV1=$218
CDTMV2=$21A
CDTMV3=$21C
CDTMV4=$21E
CDTMV5=$220
VVBLKI=$222
VVBLKD=$224
CDTMA1=$226
CDTMA2=$228
CDTMF3=$22A
SRTIMR=$22B
CDTMF4=$22C
CDTMF5=$22E
SDMCTL=$22F
SDLSTL=$230
SDLSTH=$231
SSKCTL=$232
COLDST=$244
GPRIOR=$26F
PADDL0=$270
STICK0=$278
PTRIG0=$27C
STRIG0=$284
SHFLK=$2BE
PCOLR0=$2C0
PCOLR1=$2C1
PCOLR2=$2C2
PCOLR3=$2C3
COLOR0=$2C4
COLOR1=$2C5
COLOR2=$2C6
COLOR3=$2C7
COLOR4=$2C8
MEMLO=$2E7
CRSINH=$2F0
CHACT=$2F3
CHBAS=$2F4
CH=$2FC
DDEVIC=$300
DUNIT=$301
DCOMND=$302
DSTATS=$303
DBUFLO=$304
DBUFHI=$305
DTIMLO=$306
DBYTLO=$308
DBYTHI=$309
DAUX1=$30A
DAUX2=$30B
ICCOM=$342
ICSTA=$343
ICBAL=$344
ICBAH=$345
ICPTL=$346
ICPTH=$347
ICBLL=$348
ICBLH=$349
ICAX1=$34A
ICAX2=$34B
DSKINV=$E453
CIOV=$E456
IOCB0=$00
IOCB1=$10
IOCB2=$20
IOCB3=$30
IOCB4=$40
IOCB5=$50
IOCB6=$60
IOCB7=$70
SIOV=$E459
SETVBV=$E45C
SETMR1=1
SETMR2=2
SETMR3=3
SETMR4=4
SETMR5=5
SETIMM=6
SETDEF=7
XITVBL=$E462
WARMSV=$E474
COLDSV=$E477
HPOSP0=$D000
HPOSP1=$D001
HPOSP2=$D002
HPOSP3=$D003
M0PF=$D000
M1PF=$D001
M2PF=$D002
M3PF=$D003
HPOSM0=$D004
HPOSM1=$D005
HPOSM2=$D006
HPOSM3=$D007
P0PF=$D004
P1PF=$D005
P2PF=$D006
P3PF=$D007
M0PL=$D008
M1PL=$D009
M2PL=$D00A
M3PL=$D00B
SIZEP0=$D008
SIZEP1=$D009
SIZEP2=$D00A
SIZEP3=$D00B
P0PL=$D00C
P1PL=$D00D
P2PL=$D00E
P3PL=$D00F
SIZEM=$D00C
GRAFP0=$D00D
TRIG0=$D010
TRIG1=$D011
TRIG2=$D012
TRIG3=$D013
GRAFM=$D011
COLPM0=$D012
COLPF0=$D016
COLPF1=$D017
COLPF2=$D018
COLPF3=$D019
COLBK=$D01A
PRIOR=$D01B
VDELAY=$D01C
GRACTL=$D01D
HITCLR=$D01E
CONSOL=$D01F
POT0=$D200
AUDF1=$D200
AUDF2=$D202
AUDF3=$D204
AUDF4=$D206
AUDC1=$D201
AUDC2=$D203
AUDC3=$D205
AUDC4=$D207
AUDCTL=$D208
ALLPOT=$D208
KBCODE=$D209
STIMER=$D209
RANDOM=$D20A
SERIN=$D20A
SKREST=$D20A
POTGO=$D20B
SEROUT=$D20C
IRQEN=$D20E
IRQST=$D20E
SKCTL=$D20F
SKSTAT=$D20F
PORTA=$D300
PORTB=$D301
PACTL=$D302
PBCTL=$D303
DMACTL=$D400
CHACTL=$D401
DLISTL=$D402
DLISTH=$D403
HSCROL=$D404
VSCROL=$D405
PMBASE=$D407
CHBASE=$D409
WSYNC=$D40A
VCOUNT=$D40B
NMIEN=$D40E
NMIRES=$D40F
NMIST=$D40F
DLBL1=$00
DLBL2=$10
DLBL3=$20
DLBL4=$30
DLBL5=$40
DLBL6=$50
DLBL7=$60
DLBL8=$70
DLJMP=$01
DLJVB=$41
DLHSCR=$10
DLVSCR=$20
DLLMS=$40
DLINT=$80
DLAM2=2
DLAM3=3
DLAM4=4
DLAM5=5
DLAM6=6
DLAM7=7
DLAM8=8
DLAM9=9
DLAM10=10
DLAM11=11
DLAM12=12
DLAM13=13
DLAM14=14
DLAM15=15
DLBM0=DLAM2
DLBM1=DLAM6
DLBM2=DLAM7
DLBM3=DLAM8
DLBM4=DLAM9
DLBM5=DLAM10
DLBM6=DLAM11
DLBM7=DLAM13
DLBM8=DLAM15
SWSTRT=$01
SWSEL=$02
SWOPT=$04
JYR=$08
JYL=$04
JYB=$02
JYF=$01
*Macro library
*Version9
* Data placement
MEMMACRO address
ORG%1+offset
LOC%1+develop
ENDM
USEMACRO address
:otmpset*O
:ltmpset*L
MEM%1
ENDM
USEENDMACRO
org:otmp
loc:ltmp
ENDM
* 8-bit arithmetic
ADDMACRO 8con/loc [,index reg]
%Lclc
IF['[%2]'='[X]']OR['[%2]'='[Y]']
adc%1,%2
ELSE
adc%1
ENDIF
ENDM
SUBMACRO 8con/loc [,index reg]
%Lsec
IF['[%2]'='[X]']OR['[%2]'='[Y]']
sbc%1,%2
ELSE
sbc%1
ENDIF
ENDM
DIVMACRO pwrof2
%Llsra
%MCset%1/2
IF%MC>1
DIV%MC
ELSE
%MC set0
ENDIF
ENDM
MULMACRO pwrof2
%Lasla
%MCset%1/2
IF%MC>1
MUL%MC
ELSE
%MC set0
ENDIF
ENDM
BMPMACRO loc [,index reg] ,8con
IF['[%2]'='[X]']OR['[%2]'='[Y]']
%L lda%1,%2
add#%3
sta%1,%2
ELSE
%L lda%1
add#%2
sta%1
ENDIF
ENDM
BAKMACRO loc [,index reg] ,8con
IF['[%2]'='[X]']OR['[%2]'='[Y]']
%L lda%1,%2
sub#%3
sta%1,%2
ELSE
%L lda%1
sub#%2
sta%1
ENDIF
ENDM
* 16-bit arithmetic
ADWMACRO loc1,loc2,destloc
%Llda%1
add%2
sta%3
lda%1+1
adc%2+1
sta%3+1
ENDM
SBWMACRO loc1,loc2,destloc
%Llda%1
sub%2
sta%3
lda%1+1
sbc%2+1
sta%3+1
ENDM
BMPWMACRO address,16con
%Llda%1
add#low[%2]
sta%1
IF[high %2]=0
bcc?%K
inc%1+1
?%K=*
ELSE
lda%1+1
adc#high[%2]
sta%1+1
ENDIF
ENDM
BAKWMACRO address,16con
%Llda%1
sub#low[%2]
sta%1
IF[high %2]=0
bcs?%K
dec%1+1
?%K=*
ELSE
lda%1+1
sbc#high[%2]
sta%1+1
ENDIF
ENDM
DEWMACRO word
%Llda%1
bne?%K
dec%1+1
?%Kdec%1
ENDM
INWMACRO word
%Linc%1
bne?%K
inc%1+1
?%K=*
ENDM
* Conditional branches
BGEMACRO loc
%Lbcs%1
ENDM
BGTMACRO loc
%Lbcc?%K
bne%1
?%K=*
ENDM
BLEMACRO loc
%Lbcc%1
beq%1
ENDM
BLTMACRO loc
%Lbcc%1
ENDM
BNZMACRO loc
%Lbne%1
ENDM
BZMACRO loc
%Lbeq%1
ENDM
* Conditional jumps
JMIMACRO loc
%Lbpl?%K
jmp%1
?%K=*
ENDM
JPLMACRO loc
%Lbmi?%K
jmp%1
?%K=*
ENDM
JCSMACRO loc
%Lbcc?%K
jmp%1
?%K=*
ENDM
JCCMACRO loc
%Lbcs?%K
jmp%1
?%K=*
ENDM
JGEMACRO loc
%Lblt?%K
jmp%1
?%K=*
ENDM
JGTMACRO loc
%Lble?%K
jmp%1
?%K=*
ENDM
JLEMACRO loc
%Lbgt?%K
jmp%1
?%K=*
ENDM
JLTMACRO loc
%Lbge?%K
jmp%1
?%K=*
ENDM
JNEMACRO loc
%Lbz?%K
jmp%1
?%K=*
ENDM
JNZMACRO loc
%Lbz?%K
jmp%1
?%K=*
ENDM
JEQMACRO loc
%Lbnz?%K
jmp%1
?%K=*
ENDM
JZMACRO loc
%Lbnz?%K
jmp%1
?%K=*
ENDM
* Auto decrement and branches
DXPLMACRO loc
%Ldex
IF%1='*'
bpl*-1
ELSE
IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]]
bpl%1
ELSE
jpl%1
ENDIF
ENDIF
ENDM
DYPLMACRO loc
%Ldey
IF%1='*'
bpl*-1
ELSE
IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]]
bpl%1
ELSE
jpl%1
ENDIF
ENDIF
ENDM
DXNZMACRO loc
%Ldex
IF%1='*'
bnz*-1
ELSE
IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]]
bnz%1
ELSE
jnz%1
ENDIF
ENDIF
ENDM
DYNZMACRO loc
%Ldey
IF%1='*'
bnz*-1
ELSE
IF[[*>%1]&[[*-%1]<126]]OR[[*<%1]&[[%1-*]<129]]
bnz%1
ELSE
jnz%1
ENDIF
ENDIF
ENDM
DCPLMACRO address,loc
%Ldec%1
IF%2='*'
IF%1<$100
bpl*-2
ELSE
bpl*-3
ENDIF
ELSE
IF[[*>%2]&[[*-%2]<126]]OR[[*<%2]&[[%2-*]<129]]
bpl%2
ELSE
jpl%2
ENDIF
ENDIF
ENDM
DCNZMACRO address,loc
%Ldec%1
IF%2='*'
IF%1<$100
bnz*-2
ELSE
bnz*-3
ENDIF
ELSE
IF[[*>%2]&[[*-%2]<126]]OR[[*<%2]&[[%2-*]<129]]
bnz%2
ELSE
jnz%2
ENDIF
ENDIF
ENDM
* 8-bit comparison
CPIMACRO loc [,index reg] ,8con
IF['[%2]'='[X]']OR['[%2]'='[Y]']
%L lda%1,%2
cmp#%3
ELSE
%L lda%1
cmp#%2
ENDIF
ENDM
CPBMACRO loc1,loc2
%Llda%1
cmp%2
ENDM
* 16-bit comparison
CPWMACRO loc1,loc2
%Llda%1+1
cmp%2+1
bne?%K
lda%1
cmp%2
?%K=*
ENDM
CPIWMACRO loc,16con
%Llda%1+1
cmp#high[%2]
bne?%K
lda%1
cmp#low[%2]
?%K=*
ENDM
* Memory manipulation
STBMACRO 8con,loc [,index reg]
%Llda#%1
IF['[%3]'='[X]']OR['[%3]